EFSをマウントしているクライアント数は2台固定ですが、モニタリングの「クライアント接続」が一時的に1や3になっていることがあります、なぜでしょうか。
困っていた内容
EFSを2台のEC2でマウントしています、AWSコンソールのEFS管理画面で、該当ファイルシステムのモニタリングから「クライアント接続」を確認するとクライアント接続数が一時的に1や3になっていることがあります。
当該EFSをマウントしているクライアント数は2台固定ですが、一時的に1や3になっていることがあります。
なぜでしょうか。
原因確認
AWSドキュメント確認
Amazon EFS の Amazon CloudWatch メトリクス
ClientConnections ファイルシステムへのクライアント接続の数。標準クライアントを使用する場合、マウントされた Amazon EC2 インスタンスごとに 1 つの接続があります。
注記
1 分を超える期間の平均 ClientConnections を算出するには、Sum 統計をその期間の分数で割ります。
- 単位: クライアント接続数
- 有効な統計: Sum
原因その1-ClientConnections メトリクスがデータポイントを報告しないため
NFS クライアントが EFS ファイルシステムをマウントした状態にあるもののアイドル状態(ファイルをオープンせず、ファイルロックを保持しない状況等)の場合、EFS ファイルシステムのマウントの状況に問題が無い状況であっても、ClientConnections メトリクスがデータポイントを報告しない場合があります。
EFS ファイルシステムに対する IO が発生することによって ClientConnections メトリクスがカウントされることとなります。
これらに加え、NFS クライアントと EFS ファイルシステム間にネットワークの切断などが発生した場合、NFS クライアントはインスタンス内部よりファイルシステムの操作を実施しない限り、再接続を実施致しません。
以上のような理由から、EFS をマウント済の状況であっても NFS クライアントと EFS 間の接続が存在しない状況は発生し得ることとなり、インスタンス数が減少する可能性があります
原因その2-高い可用性を実現するため
減少だけでなく、一時的に EFS へ接続されているインスタンス数よりも多い値を ClientConnections を報告する場合もあります。
上記のメトリクスの減少の説明にて、NFS クライアントの再接続についてご案内致しましたが、この挙動が発生した場合、NFS クライアントは前回と異なる EFS 基盤に対して接続する場合があります。
これは EFS は高い可用性を実現するために冗長性を確保した設計となっており、NFS クライアントの再接続動作によって(同一のマウントターゲットに対する接続であっても)前回と異なる EFS 基盤に対して接続される場合がある為となります。
この挙動が短時間の内に発生した場合、コネクション数が二重にカウントされることがあり、結果として ClientConnections メトリクスが僅かですが上昇する場合があります。
どのように確認すればよいでしょうか
VPC フローログを利用して EFS ファイルシステムへの アクセス元のクライアント IP アドレスの一覧を取得する方法がありますので、ご紹介いたします。
Amazon EFS に接続されている Amazon EC2 インスタンスのリストを表示する方法を教えてください。
参考資料
[1]Configuring the AWS CLI
[2]Amazon EFS をモニタリングするための CloudWatch アラームの作成